[IA64] Modify p2m converter to avoid hypervisor crash
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Sun, 1 Oct 2006 16:48:40 +0000 (10:48 -0600)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Sun, 1 Oct 2006 16:48:40 +0000 (10:48 -0600)
Crash occurs during destruction of VT-i domain with PV-on-HVM.

Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
Signed-off-by: Tomonari Horikoshi <t.horikoshi@jp.fujitsu.com>
xen/arch/ia64/xen/mm.c

index 6c656d53ebf9d01ecb3508c3f8e5029c7f908d81..e8305dd4253146fb90d2bfc6fdeebbf285bd5971 100644 (file)
@@ -396,6 +396,12 @@ gmfn_to_mfn_foreign(struct domain *d, unsigned long gpfn)
 {
        unsigned long pte;
 
+       // This function may be called from __gnttab_copy()
+       // during destruction of VT-i domain with PV-on-HVM driver.
+       if (unlikely(d->arch.mm.pgd == NULL)) {
+               if (VMX_DOMAIN(d->vcpu[0]))
+                       return INVALID_MFN;
+       }
        pte = lookup_domain_mpa(d,gpfn << PAGE_SHIFT, NULL);
        if (!pte) {
                panic("gmfn_to_mfn_foreign: bad gpfn. spinning...\n");